package com.tianshuo.config;

import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletRegistration;

/**
 * 加载Spring和Springmvc容器
 *
 * @author tianshuo
 */
public class SpringInitializer implements WebInit {


    @Override
    public void onStartup(ServletContext servletContext) {


        // Load Spring web application configuration
        AnnotationConfigWebApplicationContext ac = new AnnotationConfigWebApplicationContext();
        ac.register(DisabledWebMvcConfig.class);
//        ac.register(AppConfig.class);
//        ac.refresh();

        // Create and register the DispatcherServlet
        DispatcherServlet servlet = new DispatcherServlet(ac);
        ServletRegistration.Dynamic registration =
                servletContext.addServlet("dispatcherServlet", servlet);
        // 当增加此配置时,容器启动时,LoadOnstartup大于等0时，则伴随servlet实例化时，调用servlet的init方法
        // 当loadOnStartup小于0，或者不配置时，则在第一次访问servlet时，执行init方法
        registration.setLoadOnStartup(1);
        /**
         * patternUrl配置为/*,此时跳转jsp时，会直接把jsp的源码展示到页面，当配置为/时，jsp页面正常显示。
         * 此问题比较奇怪，等看了springmvc的源码之后再来的此问题。
         */
        registration.addMapping("/");

    }
}
